package model.materiasYCatedras;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.Calendar;


public class HistorialCatedra {
	private static HistorialCatedra Instancia = null;
	Map <String, CatedraEnHistorial> catedras = new HashMap<String, CatedraEnHistorial>();
	
	private HistorialCatedra(){}
	
	/**
	 * Esta clase seria un Singleton ya que permanece vigente siempre que este instanciada
	 * 
	 * @return
	 */
	public static HistorialCatedra getInstance(){
		
		if(Instancia == null){
			Instancia = new HistorialCatedra();
			System.out.println("se creo una instancia de HistorialCatedra");
			return Instancia;
		}else{
			System.out.println("ya estaba creada");
			return Instancia;
		}
	}

	public Map<String, CatedraEnHistorial> getCatedras() {
		return catedras;
	}

	public void setCatedras(Map<String, CatedraEnHistorial> catedras) {
		this.catedras = catedras;
	}
	
	
	public void agregarCatedraAlhistorial(Catedra laCatedra){
		//:TODO hay que clonar laCatedra ya que sino hace referencia a una misma instancia
		SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
		this.getCatedras().put(dateFormat.format(Calendar.getInstance().getTime()), new CatedraEnHistorial(laCatedra));
	}
	
	public CatedraEnHistorial buscarCatedraEnUnaFecha(String unaFecha){
		//:TODO Habria que validar si la catedra existe o no existe y en todo caso emitir una excepcion
		return this.catedras.get(unaFecha);
	}
	
	public Catedra clonar(Catedra unaCatedra){
		Catedra catedraClonada = new Catedra();
		this.setearCatedraClonada(catedraClonada, unaCatedra);
		return catedraClonada;
	}
	
	public void setearCatedraClonada(Catedra aSetear, Catedra seteada){
		aSetear.setAlumnos(seteada.getAlumnos());
		aSetear.setMateria(seteada.getMateria());
		aSetear.setNombre(seteada.getNombre());
		aSetear.setStaff(seteada.getStaff());
	}
}
